常用git命令-包含从一个远程仓库拉取更新同步到另外一个远程仓库

1.创建分支
git branch test

2.把分支推到远程分支
git push origin test:master // 提交本地test分支 作为远程的master分支
git push origin test:test // 提交本地test分支作为远程的test分支

3.查看本地分支
git branch

4.切换分支到test
git checkout test

5.切换到之前提交的log(commit 69ad395df31468bdc062ab7b4c623cf40c6df4ce)上
git checkout 69ad395df

6.删除本地分支test
git branch -d test

7.删除远程分支
git branch -r -d origin/branch-name
git push origin:branch-name
git remote remove br-name

8.获取远程分支信息
git remote show (remote-br)

9.将当前master中的内容提交到另外一个远程分支
git remote add branch1 https://xxx.git
git fetch branch1
git merge branch1/master
git push branch1 master

10.从一个远程仓库拉取更新同步到另外一个远程仓库。
一个典型应用场景是,我fork了一个RTT到我的git下,然后从我的远程仓库中git clone到了本地。
一段时间之后,RTT官方的git上有了更新,如何把RTT官方git上的更新同步到我的远程git上?
就利用上面的命令,首先在本地git命令中用git remote add增加一个分支来跟踪RTT官方的git,
然后把RTT官方的更新git fetch下来,
再然后用git merge合并到本地的master分支上,
最后用git push提交到自己的远程git上。

11.把分支"branchname"合并到了当前分支里面
git merge branchname
如果有冲突,在有问题的文件上会有冲突标记,在你手动解决完冲突后,
就可以把此文件添加到索引(index)中去,用git commit命令来提交,就像平时修改了一个文件 一样。

12.将其它分支多个commit合并到当前分支的一个commit
git merge --squash another
git commit -m "message here"
–squash 选项的含义是:本地文件内容与不使用该选项的合并结果相同,但是不提交、不移动HEAD,因此需要一条额外的commit命令。
其效果相当于将another分支上的多个commit合并成一个,放在当前分支上,原来的commit历史则没有拿过来。

13.打标签
git tag -a v1.4
共享标签到服务器
git push origin --tags
放弃当前目录的所有修改
git checkout .

14.git查看某个文件的修改历史
先切换到文件所在目录,如
cd packages/apps/Mms/src/com/android/mms/ui/
然后使用以下命令之一
git log -p filename
查看文件的每一个详细的历史修改,如果没有-p选项,只显示提交记录,不显示文件内容修改。
git log -p -3 filename //显示最近的3次提交
git log --pretty=oneline filename
每一行显示一个提交,先显示哈希码,再显示提交说明。
git blame filename
查看文件的每一行是哪个提交最后修改的。

git config --global http.sslVerify false
git config --global http.postBuffer 1048576000

awesome

  1. 上一个版本就是 HEAD^ ,上上一个版本就是 HEAD^^ ,当然往上100个版本写100个 ^ 比较容易数不过来,所以写成 HEAD~100
    git reset --hard HEAD^

  2. Git提供了一个命令 git reflog 用来记录你的每一次命令。

  • HEAD 指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id
  • 穿梭前,用 git log 可以查看提交历史,以便确定要回退到哪个版本。
  • 要重返未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本。
    $ git reflog
    e475afc HEAD@{1}: reset: moving to HEAD^
    1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
    e475afc HEAD@{3}: commit: add distributed
    eaadf4e HEAD@{4}: commit (initial): wrote a readme file
  1. git checkout -- file 可以丢弃工作区的修改:
    $ git checkout -- readme.txt
    命令 git checkout -- readme.txt 意思就是,把 readme.txt 文件在工作区的修改全部撤销,这里有两种情况:
    一种是 readme.txt 自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
    一种是 readme.txt 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
    总之,就是让这个文件回到最近一次 git commitgit add 时的状态。
    现在,看看 readme.txt 的文件内容:
$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

文件内容果然复原了。
git checkout -- file 命令中的 -- 很重要,没有 -- ,就变成了“切换到另一个分支”的命令

18.要关联一个远程库,使用命令 git remote add origin git@server-name:path/repo-name.git
关联后,使用命令 git push -u origin master 第一次推送master分支的所有内容

not bad

  • 删除远程分支
git push --delete origin test-branch
  • 修改本地分支名
git branch -m test-branch new-test-branch
  • 推送本地分支
git push origin new-test-branch