个人建议大部分操作使用图形化软件操作,TortoiseGit
一、配置GIT
# 配置全局用户 $ git config --global user.name "用户名" $ git config --global user.email "git账号" # 配置别名 $ git config --global alias.co checkout $ git config --global alias.ss status $ git config --global alias.cm commit $ git config --global alias.br branch $ git config --global alias.rg reflog # 这里只是美化 log 的输出,实际使用时可以在 git lg 后面加命令参数,如:git lg -10 显示最近10条提交 $ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" # 删除全局配置 $ git config --global --unset alias.xxx $ git config --global --unset user.xxx
二、常用命令
# 查看工作区和暂存区的状态 $ git status # 将工作区的文件提交到暂存区 $ git add . $ git add [file1] [file2] ... $ git add [dir] # 提交到本地仓库 $ git commit -m "本次提交说明" # add和commit的合并,便捷写法(未追踪的文件无法直接提交到暂存区/本地仓库) $ git commit -am "本次提交说明" # 合并本次提交至上次的提交 $ git commit --amend # 如果本次提交相比上次的提交有新增的文件修改,要先add $ git add [newModifyFile] $ git commit --amend # 将本地分支和远程分支进行关联 $ git push -u origin branchName # 将本地仓库的文件推送到远程分支 $ git push # 拉取远程分支的代码 $ git pull origin branchName # 合并分支 $ git merge branchName # 查看本地拥有哪些分支 $ git branch # 查看所有分支(包括远程分支和本地分支) $ git branch -a # 切换分支 $ git checkout branchName # 临时将工作区文件的修改保存至堆栈中 $ git stash # 将之前保存至堆栈中的文件取出来 $ git stash pop
三、开发建议
1、一般情况下我们会在master下拉取代码,建议开发的时候以master为基础建立新的分支,在新的分支上开发
$ git branch branchName // 以当前分支为基础新建分支
$ git checkout branchName // 切换到新分支
$ git checkout -b branchName master // 以master为基础新建分支并切换到分支
2、所有在本地修改的文件(不管在master还是其他分支),未commit之前,可以理解这些文件隶属于workspace,直到commit到具体分支,提交的部分隶属于具体分支
所以,建议在一个新分支上开发功能,例如TestBranch,提交代码时,如果本次提交需要拆分多次提交,可以以TestBranch为基础新建多个分支,例如:TestBranch1、TestBranch2、TestBranch3,这样搞的好处是利用多个分支push修改,多次提交之间没有依赖性,不会出现最先提交的代码需要修改的情况下会影响后提交的代码
3、代码走查不通过的情况下,建议使用amend来修改上次的提交,而不是Abandoned后再进行新的提交
$ git commit --amend // 建议使用TortoiseGit
4、对其他同事以合入代码,而与本地修改冲突时,可以先将本地已修改的代码stash掉,再pull远程的代码,再将stash pop出来,然后解决冲突再提交
$ git stash // 建议使用TortoiseGit
$ git stash pop // 建议使用TortoiseGit
5、分支之间的代码合并
5-1,将开发分支代码合入到master中
git checkout dev #切换到dev开发分支 git pull git checkout master git merge dev #合并dev分支到master上 git push origin master #将代码推到master上
5-2,将master的代码同步更新到开发分支中
merge方法:保证主干提交线干净(可以安全回溯)
git checkout master git pull git checkout dev git merge master git pull origin dev
6、其他所有操作,比如reset、rebase、revert等操作,建议使用TortoiseGit