用一张图帮助你快速理解和记忆
- windows下载git-scm
- Linux使用sudo apt-get install git或者yum install git
git clone URL
-
HTTPS,每次都需要输入账号和密码
-
SSH,需要添加公钥(推荐方式) 生成密钥
ssh-keygen -t rsa
, 将公钥( ~/.ssh/id_rsa.pub)粘贴到Gitlab >> User Settings >> SSH Keys
tips: 快速下载网上开源项目,使用git clone --depth=1
一般工作流程如下:
git pull origin master // 拉取最新代码
git checkout -b dev // 新建dev并切换到dev分支
// git pull origin master:dev // 可以代替上面两句
vim test.py //修改代码
git status // 查看当前状态
git add test.py // 将修改添加到暂存区
git status
git commit -m "fix issue #1"// 提交到本地仓库(当前目录的.git目录)
git push origin dev // 推送到远程dev分支
在gitlab上点击提交request merge, 发给组员review后再merge
git fetch和git pull区别:
git fetch是从远程获取最新到本地,不会自动merge.而git pull则从远程获取最新版本并且merge到本地
git fetch origin master:tmp //从远程仓库master分支获取最新到本地tmp分支
git diff tmp //将当前分支和tmp进行对比
git merge tmp //合并master分支到当前分支
//以上相当于一条命令:
git pull origin master
*使用git fetch更安全,可以选择是否合并
场景:使用git merge或者git pull遇到冲突,无法自动合并。如下:
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
解决方法: 参考
场景:你在写某个功能,但还没完成不想提交。突然接到需求,需要切到某个分支fix某个bug.
git stash // 保存当前修改进度
git stash list // 查看所有进度列表
git stash pop //从恢复进度
把修改文件从暂存区切回工作目录 git reset -- <file>
把所做修改都撤销 git checkout -- <file>
查看所有分支git branch -v
查看日志git log
查看历史命令git reflog
回滚到某个commit git reset
切回到某个分支 git checkout <commit_id>
切换到某个分支 git checkout <branch_name>
修改commit历史 git rebase -i <commit_id>
Git教程参考文档