常用git命令行

常用git命令行

1
2
3
4
5
6
首次上传一个项目到远程的命令:
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/lliuguangbo/circleloadingview.git
git push -u origin master

工作流

你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。

git init

在当前文件夹下创建git仓库.

git add

把文件添加到暂存区, 把改动添加到暂存区

  • git add 添加某个文件
  • git add * / git add . 添加所有文件

git commit -m “message”

提交代码改动,其实就是把改动已经提交到了本地仓库的HEAD中了

git remote add origin

本地仓库还没有连接远程仓库,这条命令可以连接远程仓库

git push -u origin master

你的改动现在已经在本地仓库的 HEAD 中了。执行此命令以将这些改动提交到远端仓库, master是你想要推送的分支

分支

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

git status

查看当前的分支状态

看个栗子:

1
2
3
4
5
6
7
8
9
10
On branch master

Initial commit

Changes to be committed:
(use "git rm --cached <file>..." to unstage)

new file: 2.txt
new file: README.txt
modified: 3.txt

On branch master 指明现在在master分支上
Changes to be committed 下面列出了可以提交的文件
new file 是指新增的文件
modified 是指修改的文件

git branch

  • git branch 查看本地分支:
  • git branch -d xxx 删除本地分支s
  • git branch -D <branch_name? 强行删除分支

git checkout

  • git checkout 切换分支
  • git checkout -b 创建一个新的分支并切换到新分支
  • git checkout -f 强制checkout(还没commit的修改会丢失)
  • git checkout – readme.txt: 意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
  1. 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

  2. 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

  3. 总之,就是让这个文件回到最近一次git commit或git add时的状态。

git reset

HEAD表示当前版本
git reset –hard HEAD^ 上一个版本
git reset –hard HEAD^^ 上上一个版本
git reset –hard HEAD~100 上100个版本

  • git reset –mixed 或者等 (回到某一次commit, 所有改动还在,改动还没在暂存区,修改重新添加到暂存区)
  • git reset –soft 或者等 (回到某一次commit, 所有改动在暂存区了)
  • git reset –hard 或者等 (回到某一次commit,所有改动丢失)
  • git reset –hard origin/master (用远程master分支强制覆盖本地文件)

git log

查看提交历史,以便确定要回退到哪个版本
git log –pretty=oneline
git log –graph –pretty=oneline –abbrev-commit

git reflog

git reflog用来记录你的每一次命令
用git reflog查看命令历史,以便确定要回到未来的哪个版本。

git diff

git diff 预览两个分支的差异
git diff HEAD – readme.txt 查看工作区和版本库里面最新版本的区别

git pull

取回远程主机某个分支的更新,再与本地的指定分支合并

git merge

  • git merge 合并其他分支到你的当前分支
  • git merge –no-ff -m “merge with no-ff” dev (no-ff参数,表示禁用Fast forward)

git fetch

取回所有分支的更新

git clone

  • git clone [] 从远程主机克隆一个本地库,repo远程服务器的地址,支持https,ssh等协议;dir是可选项,可以指定本地目录名。

git rm

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

git tag

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。
所以,标签也是版本库的一个快照。

在Git中打标签非常简单,首先,切换到需要打标签的分支上:
敲命令git tag 就可以打一个新标签
git tag v1.0
用命令git tag查看所有标签

果要推送某个标签到远程,使用命令git push origin

git stash 对当前的暂存区和工作区状态进行保存

git stash save - a “message” 保存到stash里

git stash list 查看stash列表

1
2
//在cmd里显示
stash@{0}:WIP on master: b5c7faa initial commit

git stash apply –index 从stash里恢复,但是恢复后,stash内容并不删除, 写法是stash@{0}这种格式的
git stash drop 删除stash
git stash pop 从stash里恢复的同时把stash内容也删了;

.gitignore

这个文件用于忽略提交的文件

批量删除分支

创建SSH Key

打开Shell(Windows下打开Git Bash)
$ ssh-keygen -t rsa -C “youremail@example.com”
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

Loading comments box needs to over the wall