设为首页 收藏本站
查看: 833|回复: 0

[经验分享] git 命令大全

[复制链接]

尚未签到

发表于 2018-9-17 06:38:04 | 显示全部楼层 |阅读模式
  一、安装git
  1、下载
  2、配置
  $ git config --global user.name "Your Name"
  $ git config --global user.email "email@example.com"
  二、创建版本库
  1、找一个目录创建一个空目录
  $ mkdir learngit
  $ cd learngit
  $ pwd
  /Users/michael/learngit
  2、通过git init 命令把这个目录变成git可以管理的仓库
  $ git init
  Initialized empty Git repository in /Users/michael/learngit/.git/
  可以通过ls-ah命令看见有哪些文件
  3、创建一个文件readme.txt,编写内容
  我们是好程序员2班的大神
  4、用命令git add告诉Git,把文件添加到仓库:
  $ git add readme.txt
  5、用命令git commit告诉Git,把文件提交到仓库:
  $git commit -m "我们只是初步创建了一下而已“
  6、commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:
  $ git add file1.txt
  $ git add file2.txt file3.txt
  $ git commit -m "add 3 files."
  三、版本回退
  1、修改reademe.txt
  我们是好程序员2班的大神
  这是真的
  2、运行git status命令查看结果
  $ git status
  3、运行git diff查看修改的内容
  $ git diff readme.txt
  diff --git a/readme.txt b/readme.txt
  index 46d49bf..9247db6 100644
  --- a/readme.txt
  +++ b/readme.txt
  @@ -1,2 +1,2 @@
  -Git is a version control system.
  +Git is a distributed version control system.
  Git is free software.
  4、git add readme.txt
  5.git status
  $ git status
  # On branch master
  # Changes to be committed:
  # (use "git reset HEAD ..." to unstage)
  #
  # modified: readme.txt
  6.$ git commit -m "add distributed"
  [master ea34578] add distributed
  1 file changed, 1 insertion(+), 1 deletion(-)
  7.git status命令看看仓库的当前状态
  $ git status
  # On branch master
  nothing to commit (working directory clean)
  8.再次修改文件
  Git is a distributed version control system.
  Git is free software distributed under the GPL.
  9.提交
  $ git add readme.txt
  $ git commit -m "append GPL"
  [master 3628164] append GPL
  1 file changed, 1 insertion(+), 1 deletion(-)
  10.通过git log查看历史版本
  或者git log --pretty=oneline
  $ git log --pretty=oneline
  3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
  ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
  cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
  11.回退到上一个版本
  git reset --hard HEAD^
  $ git reset --hard HEAD^
  HEAD is now at ea34578 add distributed
  12.查看版本库状态
  git log
  最新的那个版本append GPL已经看不到了!
  $ git reset --hard 3628164
  HEAD is now at 3628164 append GPL

  要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个append GPL的commit>  $ git reset --hard 3628164
  HEAD is now at 3628164 append GPL
  Git提供了一个命令git reflog用来记录你的每一次命令:
  $ git reflog
  ea34578 HEAD@{0}: reset: moving to HEAD^
  3628164 HEAD@{1}: commit: append GPL
  ea34578 HEAD@{2}: commit: add distributed
  cb926e7 HEAD@{3}: commit (initial): wrote a readme file
  四、添加远程仓库
  1、登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:
  2、在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
  git remote add origin git@github.com:michaelliao/learngit.git
  (远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。)
  3、本地库的所有内容推送到远程库上
  $ git push -u origin master
  Counting objects: 19, done.
  Delta compression using up to 4 threads.
  Compressing objects: 100% (19/19), done.
  Writing objects: 100% (19/19), 13.73 KiB, done.
  Total 23 (delta 6), reused 0 (delta 0)
  To git@github.com:michaelliao/learngit.git
  * [new branch] master -> master
  Branch master set up to track remote branch master from origin.
  4、从现在起,只要本地作了提交,就可以通过命令:
  $ git push origin master
  把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!
  五、从远程库中获取数据
  1、登陆GitHub,创建一个新的仓库,名字叫gitskills
  2.我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件:
  3.用命令git clone克隆一个本地库:
  $ git clone git@github.com:michaelliao/gitskills.git
  Cloning into 'gitskills'...
  remote: Counting objects: 3, done.
  remote: Total 3 (delta 0), reused 0 (delta 0)
  Receiving objects: 100% (3/3), done.
  $ cd gitskills
  $ ls
  README.md
  六、创建与合并分支
  查看分支:git branch
  创建分支:git branch
  切换分支:git checkout
  创建+切换分支:git checkout -b
  合并某分支到当前分支:git merge
  删除分支:git branch -d
  七、解决冲突
  1、准备新的feature1分支,继续我们的新分支开发:
  $ git checkout -b feature1
  修改readme.txt最后一行,改为:
  Creating a new branch is quick AND simple.
  2、在feature1分支上提交:
  $ git add readme.txt
  $ git commit -m "AND simple"
  [feature1 75a857c] AND simple
  1 file changed, 1 insertion(+), 1 deletion(-)
  3、切换到master分支:
  $ git checkout master
  Switched to branch 'master'
  Your branch is ahead of 'origin/master' by 1 commit.
  4、在master分支上把readme.txt文件的最后一行改为
  Creating a new branch is quick & simple.
  5、提交:
  $ git add readme.txt
  $ git commit -m "& simple"
  [master 400b400] & simple
  1 file changed, 1 insertion(+), 1 deletion(-)
  6、这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:
  $ git merge feature1
  Auto-merging readme.txt
  CONFLICT (content): Merge conflict in readme.txt
  Automatic merge failed; fix conflicts and then commit the result.
  果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件:
  $ git status
  # On branch master
  # Your branch is ahead of 'origin/master' by 2 commits.
  #
  # Unmerged paths:
  # (use "git add/rm ..." as appropriate to mark resolution)
  #
  # both modified: readme.txt
  #
  no changes added to commit (use "git add" and/or "git commit -a")
  7、我们可以直接查看readme.txt的内容:
  Git用标记出不同分支的内容,我们修改如下后保存:
  Creating a new branch is quick and simple.
  8、再提交:
  $ git add readme.txt
  $ git commit -m "conflict fixed"
  [master 59bc1cb] conflict fixed
  9、用带参数的git log也可以看到分支的合并情况:
  $ git log --graph --pretty=oneline --abbrev-commit
  * 59bc1cb conflict fixed
  |\
  | * 75a857c AND simple
  * | 400b400 & simple
  |/
  * fec145a branch test
  ...
  10、最后,删除feature1分支:
  $ git branch -d feature1
  Deleted branch feature1 (was 75a857c).
  八、多人协作
  因此,多人协作的工作模式通常是这样:
  首先,可以试图用git push origin branch-name推送自己的修改;
  如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  如果合并有冲突,则解决冲突,并在本地提交;
  没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
  如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
  这就是多人协作的工作模式,一旦熟悉了,就非常简单。
  小结
  查看远程库信息,使用git remote -v;
  本地新建的分支如果不推送到远程,对其他人就是不可见的;
  从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
  在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
  从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-587947-1-1.html 上篇帖子: GIT安装及详细使用 下篇帖子: Git系列二之数据管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表