git命令个人小结
Windows 使用 Git Bash 练习git命令
首先在本地新建一个文件夹
mkdir learngit #创建一个名为learngit的文件夹
cd进入该文件夹初始化本地仓库
git init
在工作区(本地仓库)修改文件并保存后,提交到暂存区
git add 文件名 #(记得带文件扩展名)
确认无误后,把整个暂存区的文件都提交到“当前分支”
git commit -m "注释"
当第二天工作时,你需要修改本地仓库的文件,修改完毕保存后,可查看本地仓库状态
git status
若你想将修改后的本地仓库的文件与“当前分支”相比较有何具体更改,可用
git diff
当你修改了很多遍,并且每次都commit提交到“当前分支”的话,那你想查看每次提交的历史就简单多了,可用
git log --pretty=oneline #--pretty=oneline 作用是将每次提交的记录输出到一行
由于HEAD代表当前版本,要是想回退到上个版本可用HEAD^ ,要是想回退到上100个版本可用HEAD~100
git reset --hard HEAD^
git reset --hard HEAD~100
你要是想回退到原来的版本,可用之前log里面的原先HEAD的commit_id,就可以指定回到哪个版本
git reset --hard commit_id
在Git中,一直都有一个可以用于记录每次操作的命令
git reflog
如果你不小心敲了一行不该有的代码
$ cat readme.txt
本地仓库
已经add到暂存区 - commit 到分支
ssss
stupid boss #不该有的一行
在提交(add)前,被你发现了,你可以用
git restore readme.txt 来撤销更改
若你已经add到暂存区了,然后你再修改,那么
git restore readme.txt 就只能回到add后的状态了。
删除文件:
1)若你想彻底删除已经提交到"当前分支"的文件
rm readme.txt
git rm readme.txt
git commit
2)若你只是不小心删了,那可以用
git restore readme.txt 来撤回
远程仓库:
1、先拥有一个github账号
2、然后在Git Bash 输入ssh-keygen -t rsa -C "alan_d_xing@163.com"#邮箱要换成你自己的
3、将.ssh文件夹里面生成的id_rsa_pub里面的内容复制到github的 SSh-key里面
添加远程仓库
1、先在github上创建一个仓库
2、然后在Git Bash里面用git remote add origin git@github.com:alanxing1122/learngit.git
(#origin为自定义远程仓库名,可同时拥有几个远程库,每个远程仓库独立一个名)
(#alanxing1122是我的github用户名)
(#learngit是我在github上所创的库名)
3、git push -u origin master
(#将本地库master分支所有内容推送到远程库)
(#第一次用需要 -u ,将本地仓库和远程仓库关联起来,以后就不用 -u 了)
克隆远程仓库
git clone git@github.com:alanxing1122/learngit.git
创建分支
git branch dev
(dev 为 <branch name>)
创建并切换分支
git switch -c dev
或git checkout -b dev
查看分支
git branch
切换分支
git switch master
合并分支
git merge --no-ff -m"注释" dev
(在master分支上,将dev分支不使用快速模式合并到master)
删除分支
git switch -d dev
(删除已合并过的分支,如果没合并过,-d要变成-D)
解决冲突
master、A分支修改了readme.txt(A先修改,master后改)
然后都commit了,
要是此刻,你在master合并A分支,那么冲突就产生了
你只需要将冲突文件修改后
git add readme.txt
git commit -m"注释,如conflict fixed"
git分支管理 – bug
2020年1月30日 16:53:18
1、当我在dev分支搞一件比较棘手需耗时较长的项目时,收到反馈master分支有bug,
这是十分头疼。(因为不能不手头上的工作先add 再commit ,这样会影响开发协同合作)
这时,我们就可以用“git stash” 这个命令将当前的工作隐藏起来,接着去修复bug。
2、切换到master分支,并创建bug分支issue-xxx:
git switch master
git checkout -b issue-xxx
3、修复完提交后再回来dev分支,接着恢复之前的工作环境继续工作。
git switch dev
git stash pop
(查看stash 里面有啥,可用git stash list)
4、由于dev是从master里面分出来的,master有bug意味着dev也是有bug的。最快捷修复bug的方法就是:
git switch dev
git cherry-pick(issue-xxx的id)
git分支管理 --feature
当我收到指示,要开发一个clear新功能时,我就可以使用feature分支
1、新建一个feature分支
git switch -c feature-clear
2、完成后切回对应分支,如dev分支进行合并
1)git switch dev
2)git merge feature-clear
3、要是在合并功能前,突然不想要这个新功能了,那么你可以删除该功能分支
git branch -D feature-clear
(要注意,因为该分支还没进行过合并,所以删除它时,需要用到“-D”)
多人协作
2020年1月30日 17:45:53
当你要查看远程库时
git remove
(一般远程库是origin)
当你要查看远程库的详细信息时
git remove -v
(必须得有权限才能看到远程库的抓取和推送地址,不然啥都没)
推送分支到远程库
使用的命令是 git push <origin-name> <local_branch-name>
当你想要推送本地某分支上的所有已在本地提交过的文件到远程库时,你需要制定本地分支。
如,我想要推送本地的master到远程库origin
git push origin master
从远程库抓取分支
使用的命令:git pull
模拟场景:
1)你要加入我们项目组,要先clone我们的库,
命令:
git clone git@github.com:github用户名/git仓库名.git
2)clone完的本地库只有master分支,由于我们都是在dev分支上开发的,若你要加入开发的话,必须得创建origin上的dev分支
git checkout -b dev origin/dev
3)然后在本地的dev上修改完内容就可以随时push到远端
git add
git commit -m“”
git push origin dev
4)若你和你的小伙伴不经意同时修改了同一份文件,并且他先推送到远端,而你后推送的话,就会报错
此时你要先git pull 把最新的抓取下来,然后再本地合并,解决冲突,再提交到远端。
标签管理
2020年1月30日 22:08:33
1、创建标签
1)选择所要打标签的分支(如dev)
git switch dev
2)打赏标签(如v1.0)
git tag v1.0
3)可对以往提交的历史版本打标签(仅需要接ID即可)
git tag v0.1 "版本ID"
2、操作标签
1)删除本地标签
git tag -d v0.1
2)推送单个本地标签到远端
git push origin v1.0
3) 推送多个本地标签到远端
git push origin --tags
4)删除远端库标签
a)先删除本地标签
git tag -d v1.0
b)再删除远端标签
git push origin :refs/tags/v1.0