前言
git是工作中最常用的代码管理工具,目前各家公司都有自己私有git托管管理工具,如:Gitea, Gogs, GitHub EE,GitLab CE,GitLab EE,BitBucket,RhodeCode CE……使用方法都是一样的,在Linux里可以直接获取git版本及使用,WindowS系统可能需要其他的工具,TortoiseGit是一个很方便查看代码提交及查看log等功能的图形化工具。
1.查看及设置用户名及邮箱:
在~/下有一个.gitconfig的目录可以查找当前git提交代码时候所所对应的username和Emile
修改指令:
- git config --global user.name "Anna"
- git config --global user.email anna.chen@xxxx.com
2.创建,跟踪远程分支及删除分支
1> 创建本地分支并选择需要远程分支
- git checkout -b newname 先创建本地分支并切换过去
- git push origin 远程分支 (另外可以在本分支上提交到远程其他分支(但不建议如此使用,若不存在相对应得本地分支不方便后续跟踪分支提交及回退到之前得版本)
- git push origin 远程分支名
git checkout -b 本地分支名 origin/远程分支名(这个很重要,区分同一个仓库的不同项目)
- 可能会拉取不成功,则我们需要先执行
git fetch
然后再执行
git checkout -b 本地分支名 origin/远程分支名
2> 将本地分支与远程分支相关联
- 将新本地分支和远程相连 git branch --set-upsteam-to origin/新分支名
3> 删除本地分支及如何删除远程分支
删除本地分支tmp:
- git checkout dev (删除分支前先切换到其他分支)
- git branch -D tmp
然后删除远程分支:
- git push origin --delete tmp
3.一次完整的提交记录:
- git checkout -b 新分支名
- git status 查看当前文件的状态,标红表示文件已修改
- git checkout 文件名 将修改过的文件恢复为未修改状态
- git checkout . 将所有变动过的文件恢复
- git add 修改的文件
- git commit -m/M "提交的注释,M表示可换行用于注释较多"
- git status 查看当前文件状态,已变绿表示已提交到本地仓库
- git checkout 主分支
- git pull 同步远程主分支上的代码
- git merge 主分支 同步主分支代码 (若有冲突文件,需要手动解决冲突后再次add 及 commit文件)
- git push orign 远程分支名 提交到远程仓库
- 远程分支merge 新分支
一次完整的提交记录如上,一般开发新的需求或者debug都不会再主分支上进行,需要注意的是本地主分支与远程主分支需要保持一致,本地开发可以在基于主分支的基础上checkout到一个新分支上进行开发,开发完成之后,再次进行合并到主分支上,下面介绍多任务进行中的一个操作
4.git stash
- git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
- git stash list :查看stash了哪些存储
- git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
- git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
- git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
- git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
- git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
- git stash clear :删除所有缓存的stash
5.分支上的查看及修改
查看本地及远程分支:
- git branch -rx 查看本地分支与追踪的远程分支
- git branch -a 查看本地及远程分支
- git branch -vv 查看本地及远程分支(本人常用)
- git bracnh -av 查看本地及远程分支,以及分支的最后一个提交注释
- git fetch --all将本地所有分支与远程保持同步
- git pull --al 最后拉取所有分支代码
修改本地分支名:
如果对于分支不是当前分支,可以使用下面代码:
- git branch -m "原分支名" "新分支名"
如果是当前,那么可以使用加上新名字
- git branch -m "新分支名称" 或 git branch -m 旧分支名 新分支名
- git push --delete origin 旧分支名
- 将新分支名推上去 git push origin 新分D支名
- 将新本地分支和远程相连 git branch --set-upsteam-to origin/新分支名
或者:
- git branch -m old_branch new_branch # Rename branch locally
- git push origin :old_branch # Delete the old branch
- git push --set-upstream origin new_branch # Push the new branch, set local branch to track the new remote
回退指定版本并推送到远程:
- git log 命令查看所有的历史版本,获取某个历史版本的id,假设查到历史版本的id是139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96
- git reset --hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96 回退
- git push -f -u origin master 把修改推到远程服务器
- git remote -v 查看远程及本地 push及pull的仓库
- cat .gitignore 查看git ignore 即没有使用git 来追踪的文件
6.有关文件提交及回退的修改
git add 撤销问题:
add缓存区操作,git 如何取消add操作,这里仅取消提交到库存区这个动作,只撤消动作,修改的文件不变 ,红字变无 (撤销没add修改)整体回到上次一次操作,绿字变红字(撤销add),可以直接使用命令
- git reset HEAD
如果是某个文件回滚到上一次操作: 同上只撤消动作工作区修改的文件不变
- git reset HEAD 文件名
撤消工作区编辑:
- git checkout -- 文件 撤销单个文件修改
- git reset --hard HEAD 撤消之前未add的所有修改
- git checkout . 撤销所有修改