1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
|
/****************************************************************************
**
** Copyright (C) 2018 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Creator documentation.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
**
****************************************************************************/
// **********************************************************************
// NOTE: the sections are not ordered by their logical order to avoid
// reshuffling the file each time the index order changes (i.e., often).
// Run the fixnavi.pl script to adjust the links to the index order.
// **********************************************************************
/*!
\contentspage index.html
\page creator-vcs-git.html
\if defined(qtdesignstudio)
\previouspage studio-projects.html
\nextpage studio-designing.html
\else
\previouspage creator-vcs-cvs.html
\nextpage creator-vcs-mercurial.html
\endif
\title Using Git
Git is a fast decentralized version control system. Git is available
for Windows, Linux, and \macos.
You can use the \l{http://code.google.com/p/gerrit/}{Gerrit} code review
tool for projects that use Git.
\section1 Using Git for Windows
If you configure Git for use with \c {git bash}, only, and use SSH
authorization, Git looks for the SSH keys in the directory where the
\c HOME environment points to. The variable is always set by \c {git bash}.
However, the variable is typically not set in a Windows command prompt. When
you run Git from a Windows command prompt, it looks for the SSH keys in its
installation directory, and therefore, the authorization fails.
You can set the \c HOME environment variable from \QC. Select
\uicontrol Tools > \uicontrol Options > \uicontrol {Version Control} >
\uicontrol Git, and then select the
\uicontrol {Set "HOME" environment variable} check box. \c HOME is
set to \c %HOMEDRIVE%%HOMEPATH% when the Git executable is run and
authorization works as it would with \c {git bash}.
\section1 Reverting Changes Using Git
The Git version control system has an index that is used to stage
changes. The index is committed on the next commit. Git allows you to revert
back to the state of the last commit as well as to the state staged in the
index.
\list
\li \uicontrol Git > \uicontrol {Current File} >
\uicontrol{Undo Unstaged Changes} reverts all changes and resets the
current file to the state of the index.
\li \uicontrol Git > \uicontrol {Current File} >
\uicontrol {Undo Uncommitted Changes} reverts all changes,
discarding the index. This returns the current file to the state it
was in right after the last commit.
\li \uicontrol Git > \uicontrol {Local Repository} > \uicontrol Reset
opens a dialog where you can select the SHA-1 to reset the working
directory to. This is useful after applying patches for review, for
example. You can choose between a \uicontrol Soft reset that does
not touch the index file nor the working tree at all, a
\uicontrol Hard reset that discards all changes to tracked files in
working tree, and a \uicontrol Mixed reset that resets HEAD and the
index (nothing remains staged) without touching the working
directory.
\endlist
\section1 Working with the Current File
In addition to the standard version control system functions, you can
select \uicontrol Tools > \uicontrol Git > \uicontrol {Current File} >
\uicontrol {Stage File for Commit} to mark a new or modified file for
committing to the repository.
To undo this function, select \uicontrol {Unstage File from Commit}.
\section1 Working with the Current Project
In addition to the standard version control system functions, you can
select \uicontrol Tools > \uicontrol Git > \uicontrol {Current Project} >
\uicontrol {Clean Project}
to clean the working directory. All files that are not under version control
are displayed in the \uicontrol {Clean Repository} dialog. Ignored files are
deselected by default. Select the files to delete and click
\uicontrol Delete.
\section1 Working with Local Repositories
In addition to the standard version control system functions, you can
select \uicontrol Tools > \uicontrol Git > \uicontrol {Local Repository} >
\uicontrol Clean to clean the repository.
To apply latest changes to the last commit, select \uicontrol Tools >
\uicontrol Git > \uicontrol {Local Repository} >
\uicontrol {Amend Last Commit}. You can also edit the commit message.
To amend an earlier comment in a series of related commits, select
\uicontrol Tools > \uicontrol Git > \uicontrol {Local Repository} >
\uicontrol {Fixup Previous Commit}. This operation is done using interactive
rebase. In case of conflicts, a merge tool is suggested.
To recover removed files, select \uicontrol Tools > \uicontrol Git >
\uicontrol {Recover Deleted Files}.
To change a series of commits in the local repository, select
\uicontrol Tools > \uicontrol Git > \uicontrol {Local Repository} >
\uicontrol {Interactive Rebase}. You can reorder or discard commits, squash
them into a single commit, or edit the commit messages.
The following sections describe how to manage local and remote branches,
apply patches, and use stashes.
\section2 Working with Branches
To work with Git branches, select \uicontrol Tools > \uicontrol Git >
\uicontrol {Local Repository} > \uicontrol {Branches}. The checked out
branch is shown in bold and underlined in the list of branches. Double-click
branch names to edit them.
\image qtcreator-vcs-gitbranch.png "Branches dialog"
The following operations are supported:
\table
\header
\li Menu Item
\li Description
\row
\li \uicontrol{Refresh}
\li Refresh the list of branches.
\row
\li \uicontrol{Add}
\li Create new tracking and non-tracking branches.
\row
\li \uicontrol{Remove}
\li Remove a local branch. You cannot delete remote branches.
\row
\li \uicontrol Rename
\li Rename a local branch.
\row
\li \uicontrol{Checkout}
\li Check out the selected branch and make it current. You can stash
changes you have made to tracked files.
\row
\li \uicontrol{Diff}
\li Show the differences between the selected and the current
branch.
\row
\li \uicontrol{Log}
\li Show the changes in a branch.
\row
\li \uicontrol Merge
\li Join the development histories in two branches together.
If the commit you are merging can be reached by following the
first commit's history, there is no divergent work to merge
together. To allow Git to move the branch pointer forward,
select \uicontrol {Fast-Forward}. If you do not want to
fast-forward the branch, select \uicontrol {No Fast-Forward}.
\row
\li \uicontrol Rebase
\li Copy local commits to the updated upstream head.
\row
\li \uicontrol Reset
\li Hard reset the active branch to the selected branch.
\row
\li \uicontrol {Cherry Pick}
\li Cherry pick the top commit from the selected branch.
\row
\li \uicontrol Track
\li Set the current branch to track the selected one.
\endtable
\section2 Applying Patches
Patches are rewriting instructions that can be applied to a set of files.
To apply a patch file that is open in \QC, select \uicontrol Tools >
\uicontrol Git > \uicontrol {Local Repository} > \uicontrol Patch >
\uicontrol {Apply from Editor}.
To select the patch file to apply from the file system, select
\uicontrol {Apply from File}.
\section2 Using Stashes
With Git, you can put your current set of changes onto a virtual shelf
called a \e stash. Stashes are useful, for example, to put aside a set of
changes to work on higher priority tasks or to pull in new chages from
another repository.
To stash all local changes, select \uicontrol Tools > \uicontrol Git >
\uicontrol {Local Repository} > \uicontrol Stash > \uicontrol Stash. The
working copy is reset to the state it had after the last commit. To save the
current state of your unstaged files and reset the repository to its staged
state, select \uicontrol {Stash Unstaged Files}.
To display a dialog that shows all known stashes with options to restore,
display or delete them, select \uicontrol Stashes.
To save a snapshot of your current work under a name for later reference,
select \uicontrol {Take Snapshot}. The working copy is unchanged. For
example, if you want to try something and find out later that it does not
work, you can discard the changes and return to the state of the snapshot.
To remove a single stashed state from the stash list and apply it on top of
the current working tree state, select \uicontrol {Stash Pop}.
\section1 Applying Actions to Commits
To browse a directory or the commit history and to apply actions on the
commits, select \uicontrol Tools > \uicontrol Git >
\uicontrol {Actions on Commits}. You can checkout, revert, or cherry-pick
commits or view them in the diff editor.
\image creator-git-commit-actions.png "Select a Git Commit dialog"
\section1 Working with Remote Repositories
In addition to the standard version control system functions, you can
select \uicontrol Tools > \uicontrol Git > \uicontrol {Remote Repository} >
\uicontrol Pull topull changes from the remote repository. If there are
locally modified files, you are prompted to stash the changes. Select
\uicontrol Tools > \uicontrol Options > \uicontrol {Version Control} >
\uicontrol Git and then select the \uicontrol {Pull with rebase} check box
to perform a rebase operation while pulling.
\section2 Managing Remote Repositories
To manage remote repositories available in Git, select \uicontrol Tools >
\uicontrol Git > \uicontrol {Remote Repository} >
\uicontrol{Manage Remotes}. Double-click the names and URLs of the remote
repositories to edit them.
The following operations are supported:
\table
\header
\li Menu Item
\li Description
\row
\li \uicontrol{Refresh}
\li Refresh the list of remote repositories.
\row
\li \uicontrol{Add}
\li Add a new remote repository.
\row
\li \uicontrol{Fetch}
\li Fetch all the branches and change information from a remote
repository.
\row
\li \uicontrol Push
\li Push committed changes to the remote repository.
\row
\li \uicontrol{Remove}
\li Remove a remote repository.
\endtable
\section2 Using Git with Subversion
You can use Git as a client for a Subversion server. To fetch changes from a
Subversion repository to a Git repository, select \uicontrol Tools >
\uicontrol Git > \uicontrol {Remote Repository} > \uicontrol Subversion >
\uicontrol Fetch.
To view the Git Subversion log, select \uicontrol Log.
\section2 Reviewing Code with Gerrit
If your Git project uses Gerrit for code reviews, you can view your changes
in \QC.
To push committed changes to Gerrit, select \uicontrol Tools >
\uicontrol Git > \uicontrol {Remote Repository} >
\uicontrol {Push to Gerrit}.
\image qtcreator-gerrit-push.png
Select the \uicontrol {Draft/private} check box to push changes that are
only visible to you and the reviewers. If you are using Gerrit 2.15 or
later, you can select the \uicontrol {Work-in-progress} check box to push
changes that do not generate email notifications.
To view the same information about each change as in the Gerrit
web interface, select \uicontrol Tools > \uicontrol Git >
\uicontrol {Remote Repository} > \uicontrol Gerrit.
\image qtcreator-gerrit.png
To view details of the selected change, select \uicontrol Show.
To cherry-pick the selected change to the local repository, select
\uicontrol {Cherry Pick}. To remove the change after testing it, select
\uicontrol Tools > \uicontrol Git > \uicontrol {Local Repository} >
\uicontrol Reset. In the \uicontrol {Undo Changes to} dialog, select the
state to reset the working directory to, and then select \uicontrol OK.
To check out the change in a headless state, select \uicontrol Checkout.
To refresh the list of changes, select \uicontrol Refresh.
The \uicontrol Remote field lists the remotes of the current repository that
are detected as Gerrit servers. Select \uicontrol Tools > \uicontrol Options
> \uicontrol {Version Control} > \uicontrol Gerrit to specify a fallback
connection to a Gerrit server over SSH. The Gerrit REST interface and the
\l{https://curl.haxx.se/}{curl} tool are used for HTTP connections.
Select the \uicontrol HTTPS check box to prepend \c https to the Gerrit URL
if Gerrit does not provide it.
\image qtcreator-gerrit-options.png
\section1 Working with Git Tools
To start a graphical interface to Git, select \uicontrol Tools >
\uicontrol Git > \uicontrol {Git Tools} > \uicontrol {Git Gui}.
\note On \macos, the default Git installation does not contain Git Gui. To
use Git Gui, install it separately. To start Git Gui from \QC, select
\uicontrol Preferences > \uicontrol {Version Control} > \uicontrol Git, and
set the path to the environment that contains Git Gui in the
\uicontrol {Prepend to PATH} field.
To start the commit viewer for Git, select \uicontrol Tools >
\uicontrol Git > \uicontrol {Git Tools} > \uicontrol Gitk. You can also
start the tool to view commits in the current document or in the folder that
contains the current document. To specify arguments for running Gitk, select
\uicontrol Tools > \uicontrol Options > \uicontrol {Version Control} >
\uicontrol Git.
To use some other application for viewing Git history, such as GitX or
QGit viewer, select \uicontrol Tools > \uicontrol Options >
\uicontrol {Version Control} > \uicontrol Git and specify the path to the
application executable in the \uicontrol {Command} field. To start the
application, select \uicontrol Tools > \uicontrol Git
> \uicontrol {Git Tools} > \uicontrol {Repository Browser}.
To resolve merge conflicts, select \uicontrol Tools > \uicontrol Git >
\uicontrol {Git Tools} > \uicontrol {Merge Tool}.
*/
|