拉取指定分支
git clone -b 分支名 url
获取git服务器的地址(在git clone url生成文件夹中执行)
git remote -v
使用git init创建的项目,没有origin的地址,需要手动添加
git remote add origin git@github.com:/lenisleopold/xxx.git
git remote add origin user_git@helloweb.top:/gitrepo/xxx.git
在当前目录初始化一个git仓库
git init
创建git服务器
git init --bare xxx.git 在服务器上执行该命令,用于接收推送,不用做开发
查看当前仓库的状态
git status
如果显示
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.txt
表示有文件未被放到暂存区
在工作区的操作
将文件放到暂存区,或者把工作区的更改的文件更新到暂存区
git add <file>
git add . 将所有文件放到暂存区
恢复文件
git checkout -- <file> 将文件恢复到上次git commit之后的状态,或者恢复到上一次git add时的状态,或者恢复到第一次git clone下来的状态。
在暂存区的操作
提交文件到本地仓库
git commit -m 提交了文件 提交时要写注释,否则报错
补充提交
git commit -m 'initial commit' // 第一次提交 git add forgotten_file //追加了一个文件 git commit --amend //补充提交,和之前的提交算作同一次。
在仓库的操作
查看版本
git log
查看所有版本
git reflog
回退版本
git reset HEAD 上次git add 的内容全部撤销,不会改动文件
git reset HEAD <file> 上次git add 中的某个文件撤销,不会改动文件
git reset 回退git add的命令
git reset --hard HEAD^ 回到上一个版本
git reset --hard HEAD^^ 回到之前两个版本
git reset --hard HEAD^^ 回到之前三个版本
git reset --hard commit_id 回到未来的版本
gitk --all 在gitk工具中查看提交记录
从git服务器获取文件
git clone url
删除远程地址
git remote remove origin
向服务器推送
git push <远程主机名> <本地分支名> <远程分支名>
git push origin master:refs/for/master
将本地master分支推送到远程origin主机的master分支上,如果该远程分支不存在,则会被新建
git push origin master
如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
git push origin : refs/for/master
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master
git push origin
如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
git push
如果当前分支只有一个远程分支,那么主机名都可以省略
不带任何参数的git push的话,默认只推送当前分支,叫做simple方式。但是如果是Git2.0之前,会推送所有有对应的远程分支的本地分支,叫做matching方式。
git config --global push.default simple 修改git push的默认推送方式
git config --global push.default matching 修改git push的默认推送方式
git push -u origin master
如果当前分支与多个主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push
git push --all origin 将本地的所有分支都推送到远程主机,不管是否存在对应的远程分支
git push --force origin 即时本地版本库比远程服务器版本库低,也强制推送
git push origin --tags //git push 的时候不会推送标签,如果一定要推送标签的话那么可以使用这个命令
从服务器获取更新
git pull
查看分支
git branch 返回 * master 表示当前在主分支上
git branch -r 查看远程的分支名
git branch -a 查看远程的所有分支
创建分支
git branch 分支名
切换到分支
git checkout 分支名
创建分支并切换到该分支
git checkout -b 分支名
从主分支合并分支
git checkout master 切换到主分支
git merge 分支名 合并分支
删除本地分支
git branch -d 分支名
本地分支重命名
git branch -m oldName newName
重命名远程分支的步骤
1,把远程分支对应的本地分支改名 git branch -m oldName newName
2,删除远程分支,git push --delete origin oldName
3,上传新命名的本地分支,git push origin newName
4,把修改后的本地分支和远程分支关联,git branch --set-upstream-to origin/new Name
忽略指定文件
.gitignore文件 里的项目即是 git add不会去监测变化的文件
# Dependency directories
node_modules/
jspm_packages/
git每次提交要求输入用户名和密码解决办法:
一:使用ssh clone的情况
在本地生成秘钥对,然后复制公钥内容到github的秘钥管理页面 https://github.com/settings/keys
二:使用http clone的情况
编辑C盘的C:\Users\用户名\.gitconfig 文件,
添加:
[user]
name = username //你的用户名
email = anything //你的git邮箱账号
[credential]
helper = store
也可以执行 git config --global credential.helper store
git的配置文件有三个,分别是系统级配置system,全局级配置global,本地配置local。权重关系是:system系统级配置<global全局级配置<local本地配置。
查看配置
git config --local -l 查看本地Git配置
git config --global -l 查看全局Git配置
git config --system -l 查看系统Git配置
git config -l 查看Git本地,全局,系统所有生效中的配置
编辑配置
git config --global user.email '11111111@qq.com' 设置邮箱
git config --global user.name 'xxxxxxxxx' 设置用户名
git config --global http.proxy www.xxx.com http代理
git config --global https.proxy www.xxx.com https代理
git走ss代理端口,可以用http://或者socks://协议,但是区别在于:socks5不支持通过pubkey免密登录github,每次提交代码只能输入用户名和密码。http可以支持免密登录。
git config --global http.proxy http://10.136.130.53:808
git config --global https.proxy http://10.136.130.53:808
git config --global --unset <xxx>删除配置
git config --global --unset http.proxy 取消http代理
git config --global --unset https.proxy 取消https代理
TortoiseGit客户端和汉化包,下载地址:https://tortoisegit.org/download/
本地的项目上传git服务器仓库的步骤:
1,在项目文件夹内执行 git init 创建git仓库
2,git remote add origin http://xxx 把远程git仓库的地址添加给本地git仓库
3,git pull 拉取一下,本地文件不会变化,但是可以得到所有远程分支名
4,git branch -a 查看所有远程分支名
5,git checkout branch_name 切换到分支
6,git add . 添加文件 注意项目文件夹内要有.gitignore文件,要把/node_modules 和.svn文件夹给添加到里面
7,git commit -m 注释
8,git push 提交