git常用命令

初始化git操作(摘自码云)


Git 全局设置:
git config --global user.name "luohanye"
git config --global user.email "indexman@126.com"


创建 git 仓库:
mkdir helloweb
cd helloweb
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://git.oschina.net/indexman/helloweb.git
git push -u origin master

#从远程仓库clone
ssh-keygen -t rsa -C "indexman@126.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/dylan-pc/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/dylan-pc/.ssh/id_rsa.
Your public key has been saved in /c/Users/dylan-pc/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:VvO2k+pzQjROCtAijxjw1ZEBsebKlIy69gH8CV3+G4s indexman@126.com
The key's randomart image is:
+---[RSA 2048]----+
|      .. .       |
|      ..o        |
|      o* .o      |
|. .o.+B +.+o     |
| o.+++.=S= .o    |
| .oo=...o o. o   |
|.  +oo o +  +    |
| o  o . o *...   |
|o ..   E +o+     |
+----[SHA256]-----+

查看已生成的公钥
cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8U3Fr0SyPmNEiJVc1RZ5pEjd9YouT8HypXo28a8I+ueqmcr4CMxiLC5F6uYoST1dqiAtdcr8Xbd5AL30gCh+V4uJBXh9xYyOB8/3M0iUuMknLHBff5OF2QmUUK5s/z+MuTbtbxZxVsa6IHqZ3k5F7mL1C/1Jn88x5gDVWXRmaqYx8mSaocTu2Ar2uVzRa/aH9WB2+YrkRmVgmZ01DbNpPWD1EGX+XiJrw5UyqiXTpPntDs/EBq2glSiSxXqe2dw+GB4bATIqFm86PQx++EaajSuXfG1SkohTmvwzZTLEauukC2LqCUXV/U5pVY3tF2fPToFFsDOny4P+i8BeOSVI/ indexman@126.com

添加到码云


已有项目上传
cd existing_git_repo
git init
git remote add origin https://git.oschina.net/indexman/helloweb.git
#拿下readme.md文件
git pull --rebase origin master
git push -u origin master


#查看远程仓库信息
git remote
【origin】
git remote -v

origin  https://git.oschina.net/indexman/example.git (fetch)
origin  https://git.oschina.net/indexman/example.git (push)

git remote show origin
【* remote origin
  Fetch URL: https://git.oschina.net/indexman/example.git
  Push  URL: https://git.oschina.net/indexman/example.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)


#查看状态
git status
git status -s

#查看更改
git diff
git log
【commit 9af9b4f9341d78b4b65e9f10f57a76e4e10fd855
Author: luohanye <indexman@126.com>
Date:   Wed Aug 30 11:27:43 2017 +0800

    更新 HelloWorld.java

commit 257857a248a3dafee4ca9912a1bc2bd88d0c0ac7
Author: dylan-pc <xusucheng@beyondbit.com>
Date:   Wed Aug 30 11:07:39 2017 +0800

    add HelloWorld clss

git log -p -2
git log -stat
git log --stat
git log --pretty=format:"%h %s" --graph
git diff
git --help
git --diff
git diff
git diff --cached

#克隆项目
git clone https://git.oschina.net/indexman/example.git
cd example/
dir
cat README.md
exit

#添加到暂存区
git add HelloWorld.java
git status -s

#提交到暂存区
git commit HelloWorld.java
$ git commit -m "add HelloWorld clss"
[master 257857a] add HelloWorld clss
 1 file changed, 6 insertions(+), 1 deletion(-)

#push到远程仓库
git push

#获取仓库最新更改
git pull
【remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://git.oschina.net/indexman/example
   257857a..9af9b4f  master     -> origin/master
Updating 257857a..9af9b4f
Fast-forward
 HelloWorld.java | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

#暂存当前正在修改的内容
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
用'git stash apply stash@{1}将你指定版本号为stash@{1}的工作取出来


#移动文件后push
git reset HEAD HelloWorld.java
git commit -m "move HelloWorld.java to src/"
git push

#重命名文件
git mv HelloWorld.java HelloWorld2.java
git commit -m "xxx"

#删除文件
git rm HelloWorld2.java
git commit -a -m "remove HelloWorld2.java"

#修正错误
git checkout Developer.java #把提交到暂存区的修改撤回


#HEAD指针
如果发现错误的将不想暂存的文件被git add进入索引之后,想回退取消,则可以使用命令
git reset HEAD <file>

#处理冲突
$ git pull
【remote: Counting objects: 4, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From https://git.oschina.net/indexman/example
   41fc76e..9f1464b  master     -> origin/master
Auto-merging src/Developer.java
CONFLICT (content): Merge conflict in src/Developer.java
Automatic merge failed; fix conflicts and then commit the result.

#git fetch和git pull的区别
git fetch:相当于是从远程获取最新版本到本地,不会自动合并。
$ git fetch origin master
$ git log -p master..origin/master
$ git merge origin/master
Shell
以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
上述过程其实可以用以下更清晰的方式来进行:
$ git fetch origin master:tmp
$ git diff tmp 
$ git merge tmp
Shell
2. git pull:相当于是从远程获取最新版本并merge到本地 
git pull origin master
Shell
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。

 

 

 

posted @ 2019-03-14 16:29  一锤子技术员  阅读(4)  评论(0编辑  收藏  举报  来源