Git学习

来源:互联网 发布:淘宝没有信誉怎么办 编辑:程序博客网 时间:2024/06/06 14:08

git常用命令汇总

Offline

  • 在本地添加和提交
git add file1.txtgit add file2.txt file3.txtgit add .  英文句号 . 可以一次添加所有修改过的文件git commit -m "add 3 files."no changes added to commit (use "git add" and/or "git commit -a")git status 工作区的状态。git diff用可以查看修改内容。git reset --hard commit_id Git允许我们在版本的历史之间穿梭,HEAD指向的版本就是当前版本git log --pretty=oneline 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。 git reflog 查看命令历史(本地),以便确定要回到未来的哪个版本。git log 查看commits
  • 版本库(Repository).git

隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,
第一步用命令git reset HEAD file
第二步按场景1操作git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

git reset --hard commitid --一键还原

git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

Online

  • 远程仓库

  • 创建SSH Key

ssh-keygen -t rsa -C "邮箱"cd ~  用户主目录下,.ssh目录登陆GitHub,Account settings=> SSH Keys=> Add SSH Key=> Title=>Key文本框里粘贴id_rsa.pub文件的内容
  • git init + remote add = git clone
git init    init git local repogit remote add origin git@server-name:path/repo-name.git  关联一个远程库;git clone git@server-name:path/repo-name.git   git push -u origin master 第一次推送master分支的所有内容;git push origin master 此后,每次本地提交后,推送命令最新修改;
  • 分布式版本系统
    本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步

  • Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

  • Git鼓励大量使用分支:

git branch -a -v 查看分支: -a 显示本地及远程分支 -v 详细信息git branch <name> 创建分支: git branch devgit branch -d <name> 删除分支: git branch -d/D dev     -D 强制删除git checkout <name> 切换分支: git checkout devgit checkout -b <name> 创建+切换分支:git checkout -b devgit merge <name> 合并某分支到当前分支,当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。git log --graph  分支合并图steps:git checkout mastergit checkout -b issue-101git add readme.txt git commit -m "fix bug 101"git checkout mastergit branch -d issue-101

Git分支十分强大,在团队开发中应该充分应用。
–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并
fast forward合并就看不出来曾经做过合并
git merge –no-ff -m “merge with no-ff” dev(branch no)

  • stash功能
git stash 把当前工作现场“储藏”起来,等以后恢复现场后继续工作git stash apply,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;git stash pop,恢复的同时把stash内容也删了:
  • 团队开发
git remote -v 查看远程库信息;本地新建的分支如果不推送到远程,对其他人就是不可见的;git checkout -b branch-name origin/branch-name,在本地创建和远程分支对应的分支 本地和远程分支的名称最好一致;git branch --set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联;git pull 从远程抓取分支 如果有冲突,要先处理冲突。
  • git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git log --pretty=oneline --abbrev-commitgit tag v0.9 6224937git show v0.9git tag -a <tagname> -m "blablabla..."可以指定标签信息;git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;git tag可以查看所有标签。git push origin <tagname>可以推送一个本地标签;git push origin --tags可以推送全部未推送过的本地标签;git tag -d <tagname>可以删除一个本地标签;git push origin :refs/tags/<tagname>可以删除一个远程标签。
  • alias 别名
git config --global alias.st statusgit config --global alias.co checkoutgit config --global alias.ci commitgit config --global alias.br branch
  • linux alias
show all: aliascancle: unalias aliasnamesetup: alias dkb='docker build'e.g.alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'alias dkb='docker build'alias dki='docker images'alias dkp='docker ps'alias dkr='docker run'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias gta='git add .'alias gtc='git commit -m'alias gts='git status'alias l='ls -CF'alias la='ls -al --color=auto'alias ll='ls -alF'alias ls='ls --color=auto'

官方文档
https://git-scm.com/docs
中文文档
https://git-scm.com/book/zh/v2
从零开始学习推荐网站
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

原创粉丝点击