git学习——基本命令(1) git学习笔记

配置用户名和邮件地址

$ git config --global user.name "your name"
$ git config --global user.email "your email address"

远程仓库相关命令

检出仓库:$ git clone git://github.com/jquery/jquery.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url --push [name] [newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName][localBranchName]
提交分支
$git push origin test:master         // 提交本地test分支作为远程的master分支
$git push origin test:test           // 提交本地test分支作为远程的test分支

分支(branch)操作相关命令

查看本地分支:$ git branch
查看远程分支:$ git branch -r
创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,
对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程):$ git push origin [name]   ----默认是本地分支push到远程。
删除远程分支:$ git push origin :heads/[name] 或 $ git push origin :[name] 
远程分支删除后本地更新:$ git remote prune origin
实例
1、当前分支为feature/v20170909
$ git checkou -b  feature/v20170909
2、拉取远程develop最新分支
$ git pull origin develop:develop
3、将本地develop合并到feature/v20170909
$ git merge develop
4、将本地分支提交到远端
$ git push origin feature/v20170909

创建空的分支

(执行命令之前记得先提交你当前分支的修改,否则会被强制删干净没得后悔)
$git symbolic-ref HEAD refs/heads/[name]
$rm .git/index
$git clean -fdx

版本(tag)操作相关命令

查看版本:$ git tag
创建版本:$ git tag [name]
删除版本:$ git tag -d [name]
查看远程版本:$ git tag -r
创建远程版本(本地版本push到远程):$ git push origin [name]
删除远程版本:$ git push origin :refs/tags/[name]
合并远程仓库的tag到本地:$ git pull origin --tags
上传本地tag到远程仓库:$ git push origin --tags
创建带注释的tag:$ git tag -a [name] -m 'yourMessage'

忽略一些文件、文件夹不提交

在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如

target
bin
*.db

Git 常用命令

git branch 查看本地所有分支
git branch -d dev2  删除本地分支 
git branch -D dev2 强制删除本地分支
git branch -a 查看所有的分支
git branch -r 查看本地所有分支

git fetch 相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin dev

git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来

git config --list 看所有用户

git ls-files 看已经被提交的

git status 查看当前状态 

git log 看你commit的日志

git diff 查看尚未暂存的更新
git diff --cached 或 $ git diff --staged 查看尚未提交的更新

git stash push 将文件给push到一个临时空间中
git stash pop 将文件从临时空间pop下来
git stash (可以把新增文件add仓库一起暂存) 暂存修改记录 
git stash list  查看暂存记录 
git stash drop 暂存编号  删除暂存 
git stash clear  清除暂存 

git commit 提交 
git commit -am "init" 提交全部并且加注释 
git commit -a 提交当前repos的所有的改变
git commit -v 当你用-v参数的时候可以看commit的差异
git commit -m "This is the message describing the commit" 添加commit信息
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令

git remote add origin git@192.168.1.119:ndshow
git remote show origin 显示远程库origin里的资源
git remote show 查看远程库

git push origin master 将文件给推到服务器上 
git push origin master:develop
git push origin master:hb-dev 将本地库与服务器上的库进行关联 
git push origin :test  删除远端分支 

git checkout --track origin/dev 切换到远程dev分支
git checkout -b dev 建立一个新的本地分支dev
git checkout -b dev  origin/dev 建立一个新的本地分支dev,来源于远程的origin的dev分支
git checkout dev 切换到本地dev分支

git merge origin/dev 将分支dev与当前分支进行合并


git add .
git add [file name] 添加一个文件到git index

git rm 文件名(包括路径) 从git中删除指定文件
git rm [file name] 删除一个文件
git rm a.a 移除文件(从暂存区和工作区中删除)
git rm --cached a.a 移除文件(只从暂存区中删除)
git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)

git remote prune origin  删除远程不存在,但本地存在但分支

其他不常用命名

git config --global credential.helper store   存储HTTP格式密码 
git config --global core.quotepath false   中文乱码 
git config --global core.autocrlf false    LF换行 

Linux下 保存 git账号密码

参考地址:
https://www.cnblogs.com/boystar/p/5644025.html

step-1:在~/下, touch创建文件 .git-credentials, 用vim编辑此文件,输入内容格式

touch .git-credentials
vim .git-credentials

在里面按“i”然后输入: https://{username}:{password}@github.com
比如 https://account:password@github.com

step-2:在终端下执行

git config --global credential.helper store

step-3:可以看到~/.gitconfig文件,会多了一项:

[credential]
helper = store

step-4:OK

设置或者取消代理

git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
git config --global --unset http.proxy
git config --global --unset https.proxy